package sort;

/**
 * @Author: fzykd
 * Date: 2024-04-17
 * Time: 20:36
 * User: LQH
 */


import java.util.Arrays;

/**
 * 冒泡排序: 通过相邻元素的比较和位置交换，使得每次遍历都可以得到剩余元素中的最大值或者最小值，将其放入有序序列中正确的位置
 */

public class Bubbling {
    public static void main(String[] args) {

        int[] arr = {6, 3, 9, 4, 11, 12};

        //有arr.length-1轮冒泡
        for (int i = 0; i < arr.length - 1; i++) {
            //做一个优化 标志位优化
            boolean flag = false;
            //每走一轮就 有一个元素到了最后的位置 不用在比较了
            //5个元素 比较元素是i位置 和i+1位置 如果i走到最后一个元素 那么i+1就数组越界了
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
                    flag = true;
                }
            }
            //说明已经有序了 没有交换发生了
            if (!flag) {
                break;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}
